<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="index.css" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Segment Anything WebGPU | Transformers.js</title>
  </head>

  <body>
    <h1>Segment Anything WebGPU</h1>
    <h3>
      In-browser image segmentation w/
      <a href="https://hf.co/docs/transformers.js" target="_blank"
        >🤗 Transformers.js</a
      >
    </h3>
    <div id="container">
      <label id="upload-button" for="upload">
        <svg
          width="25"
          height="25"
          viewBox="0 0 25 25"
          fill="none"
          xmlns="http://www.w3.org/2000/svg"
        >
          <path
            fill="#000"
            d="M3.5 24.3a3 3 0 0 1-1.9-.8c-.5-.5-.8-1.2-.8-1.9V2.9c0-.7.3-1.3.8-1.9.6-.5 1.2-.7 2-.7h18.6c.7 0 1.3.2 1.9.7.5.6.7 1.2.7 2v18.6c0 .7-.2 1.4-.7 1.9a3 3 0 0 1-2 .8H3.6Zm0-2.7h18.7V2.9H3.5v18.7Zm2.7-2.7h13.3c.3 0 .5 0 .6-.3v-.7l-3.7-5a.6.6 0 0 0-.6-.2c-.2 0-.4 0-.5.3l-3.5 4.6-2.4-3.3a.6.6 0 0 0-.6-.3c-.2 0-.4.1-.5.3l-2.7 3.6c-.1.2-.2.4 0 .7.1.2.3.3.6.3Z"
          ></path>
        </svg>
        Click to upload image
        <label id="example">(or try example)</label>
      </label>
      <image id="image"></image>
      <canvas id="mask-output"></canvas>
    </div>
    <label id="status"></label>
    <div id="controls">
      <button id="reset-image">Reset image</button>
      <button id="clear-points">Clear points</button>
      <button id="cut-mask" disabled>Cut mask</button>
    </div>
    <p id="information">
      Left click = positive points, right click = negative points.
    </p>
    <input id="upload" type="file" accept="image/*" disabled />

    <div style="display: none">
      <!-- Preload star and cross images to avoid lag on first click -->
      <img
        id="star-icon"
        class="icon"
        src="https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/star-icon.png"
      />
      <img
        id="cross-icon"
        class="icon"
        src="https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/cross-icon.png"
      />
    </div>
    <script src="index.js" type="module"></script>
  </body>
</html>
